基本的查询语句的结构
----------
select [字段表达式列表] [from子句] [where 子句] [group by 子句] [having 子句] [order by子句] [limit 子句]
字段表达式子句
-------
注意,表达式与别名的概念
1+1,$v1+10, abs(-10)

如果 为 字段名,那么字段名就是一个 变量的概念,可以参与运算!

因此,可以利用各种运算符,来形成SQL中的表达式!
例如:逻辑运算符:

关系运算符:

可以是一个列表

每个表达式,可以有一个别名:
select结果内,以 表达式本身来命名的!

但是,有两个典型的问题:
1, 表达式直接做名字不容易 识别!
2, 如果名字冲突,不能区分!

使用 AS 关键字可以使用别名,可以省略as关键字,但是不建议省略!

from子句
------
表示查询的来源,就是表!
可以写表名列表,使用逗号分割

如果此时没有条件,相当于形成了一个 笛卡尔积!
A集合的每个元素,都与B集合的每个元素之间有个关联!
A表的所有记录,都与B表的所有记录之间存在关联!
此时结果中会将所有的字段都列出来,包括重名的!

可以为 相应的字段名起别名:
此时 访问到某个字段需要使用 表 名.字段名的形式!

表的别名
如果多次出现 表名.字段名的情况,可以为表名起别名!

dual 的问题
虚拟表名问题

是语法更加规范而已!
where子句,查询条件子句
--------------
where 条件表达式
运算符,变量(字段)
省略where子句,相当于永远为真~

where,找到每条记录,并依次执行条件表达式,根据条件结果返回数据!
形成 条件表达式的基本要素:
数据,(变量),运算符,函数调用()
典型的运算符:
关系: \> \< \>= \<= != =
like 模糊查询。数据 like ‘模式匹配符’
可以使用 % 和 \_ 作为通配符

not like,不像like取反!


between 3 and 5, 在某个区间,闭区间。

包括边界值:

in,在某个集合之内
in (元素列表)
not in,不在某个集合内
not in (元素列表)

留心:
再做 批量操作时,in notin 的出镜率 很高!
集合(3,4,5)区间(3,4)
null 值的判断
不能使用普通的运算符,因为运算的结果都是null,而且不能作为查询条件!


应该使用 is null 或者 is not null 来判断!

应该使用上面的来完成判断:

函数 (isnull())也可以完成类似的判断:

注意:运算符也有的优先级的概念,注意可以使用 () 来修改优先级!

上一篇: [19、查询 select 的用法2](http://arick.leanote.com/post/19%E3%80%81%E6%9F%A5%E8%AF%A2%C2%A0select%C2%A0%E7%9A%84%E7%94%A8%E6%B3%952)
下一篇: [17、增加操作insert into](http://arick.leanote.com/post/17%E3%80%81%E5%A2%9E%E5%8A%A0%E6%93%8D%E4%BD%9Cinsert%C2%A0into)